package com.ly.gof.behavioral.templatemethod;

/**
 * @author liuyang
 * @des 抽象类/抽象模板（Abstract Class）
 * 抽象模板类，负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。
 * 一。模板方法 ：定义了算法的骨架，按某种顺序调用其包含的基本方法。
 * 二。基本方法：是整个算法中的一个步骤，包含以下几种类型。
 * 1.抽象方法：在抽象类中声明，由具体子类实现。
 * 2.具体方法：在抽象类中已经实现，在具体子类中可以继承或重写它。
 * 3.钩子方法：在抽象类中已经实现，包括用于判断的逻辑方法和需要子类重写的空方法两种。
 * @Version 1.0
 * @Date: 02/08/2021 16:06
 */
//抽象类
public abstract class AbstractClass {
    //模板方法
    public void TemplateMethod() {
        SpecificMethod();
        abstractMethod1();
        abstractMethod2();
    }

    //具体方法
    public void SpecificMethod() {
        System.out.println("抽象类中的具体方法被调用...");
    }

    //抽象方法1
    public abstract void abstractMethod1();

    //抽象方法2
    public abstract void abstractMethod2();
}